home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / QD3DPick.a < prev    next >
Encoding:
Text File  |  1997-08-12  |  10.7 KB  |  376 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        QD3DPick.a
  3. ;
  4. ;    Contains:    Q3Pick methods                                    
  5. ;
  6. ;    Version:    Technology:    Quickdraw 3D 1.5.1
  7. ;                Release:    Universal Interfaces 3.0.1
  8. ;
  9. ;    Copyright:    © 1995-1997 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__QD3DPICK__') = 'UNDEFINED' THEN
  19. __QD3DPICK__ SET 1
  20.  
  21.     IF &TYPE('__QD3D__') = 'UNDEFINED' THEN
  22.     include 'QD3D.a'
  23.     ENDIF
  24.  
  25.     IF &TYPE('__QD3DSTYLE__') = 'UNDEFINED' THEN
  26.     include 'QD3DStyle.a'
  27.     ENDIF
  28.     IF &TYPE('__QD3DGEOMETRY__') = 'UNDEFINED' THEN
  29.     include 'QD3DGeometry.a'
  30.     ENDIF
  31.  
  32. ; *****************************************************************************
  33. ; **                                                                            **
  34. ; **                            Mask bits for hit information                     **
  35. ; **                                                                            **
  36. ; ****************************************************************************
  37.  
  38.  
  39. ; typedef long                            TQ3PickDetailMasks
  40. kQ3PickDetailNone                EQU        0
  41. kQ3PickDetailMaskPickID            EQU        $01
  42. kQ3PickDetailMaskPath            EQU        $02
  43. kQ3PickDetailMaskObject            EQU        $04
  44. kQ3PickDetailMaskLocalToWorldMatrix EQU    $08
  45. kQ3PickDetailMaskXYZ            EQU        $10
  46. kQ3PickDetailMaskDistance        EQU        $20
  47. kQ3PickDetailMaskNormal            EQU        $40
  48. kQ3PickDetailMaskShapePart        EQU        $80
  49. kQ3PickDetailMaskPickPart        EQU        $0100
  50. kQ3PickDetailMaskUV                EQU        $0200
  51. ; typedef unsigned long                 TQ3PickDetail
  52.  
  53. ; ******************************************************************************
  54. ; **                                                                             **
  55. ; **                                Hitlist sorting                                 **
  56. ; **                                                                             **
  57. ; ****************************************************************************
  58.  
  59.  
  60. ; typedef long                            TQ3PickSort
  61. kQ3PickSortNone                    EQU        0
  62. kQ3PickSortNearToFar            EQU        1
  63. kQ3PickSortFarToNear            EQU        2
  64.  
  65. ; ******************************************************************************
  66. ; **                                                                             **
  67. ; **                    Data structures to set up the pick object                 **
  68. ; **                                                                             **
  69. ; ****************************************************************************
  70.  
  71. TQ3PickData                RECORD 0
  72. sort                     ds.l    1                ; offset: $0 (0)
  73. mask                     ds.l    1                ; offset: $4 (4)
  74. numHitsToReturn             ds.l    1                ; offset: $8 (8)
  75. sizeof                     EQU *                    ; size:   $C (12)
  76.                         ENDR
  77. TQ3WindowPointPickData    RECORD 0
  78. data                     ds        TQ3PickData        ; offset: $0 (0)
  79. point                     ds        TQ3Point2D        ; offset: $C (12)
  80. vertexTolerance             ds        Float32            ; offset: $14 (20)
  81. edgeTolerance             ds        Float32            ; offset: $18 (24)
  82. sizeof                     EQU *                    ; size:   $1C (28)
  83.                         ENDR
  84. TQ3WindowRectPickData    RECORD 0
  85. data                     ds        TQ3PickData        ; offset: $0 (0)
  86. rect                     ds        TQ3Area            ; offset: $C (12)
  87. sizeof                     EQU *                    ; size:   $1C (28)
  88.                         ENDR
  89. ; ******************************************************************************
  90. ; **                                                                             **
  91. ; **                                    Hit data                                 **
  92. ; **                                                                             **
  93. ; ****************************************************************************
  94.  
  95. TQ3HitPath                RECORD 0
  96. rootGroup                 ds.l    1                ; offset: $0 (0)
  97. depth                     ds.l    1                ; offset: $4 (4)
  98. positions                 ds.l    1                ; offset: $8 (8)
  99. sizeof                     EQU *                    ; size:   $C (12)
  100.                         ENDR
  101. ; *    The following data structure has been obsoleted by
  102. ; *    the Q3Pick_GetPickDetailData function in conjunction
  103. ; *    with the pickDetailValue enum
  104.  
  105. TQ3HitData                RECORD 0
  106. part                     ds.l    1                ; offset: $0 (0)
  107. validMask                 ds.l    1                ; offset: $4 (4)
  108. pickID                     ds.l    1                ; offset: $8 (8)
  109. path                     ds        TQ3HitPath        ; offset: $C (12)
  110. object                     ds.l    1                ; offset: $18 (24)
  111. localToWorldMatrix         ds        TQ3Matrix4x4    ; offset: $1C (28)
  112. xyzPoint                 ds        TQ3Point3D        ; offset: $5C (92)
  113. distance                 ds        Float32            ; offset: $68 (104)
  114. normal                     ds        TQ3Vector3D        ; offset: $6C (108)
  115. shapePart                 ds.l    1                ; offset: $78 (120)
  116. sizeof                     EQU *                    ; size:   $7C (124)
  117.                         ENDR
  118. ; ******************************************************************************
  119. ; **                                                                             **
  120. ; **                                Pick class methods                             **
  121. ; **                                                                             **
  122. ; ****************************************************************************
  123.  
  124. ;
  125. ; extern TQ3ObjectType Q3Pick_GetType(TQ3PickObject pick)
  126. ;
  127.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  128.         IMPORT_CFM_FUNCTION Q3Pick_GetType
  129.     ENDIF
  130.  
  131. ;
  132. ; extern TQ3Status Q3Pick_GetData(TQ3PickObject pick, TQ3PickData *data)
  133. ;
  134.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  135.         IMPORT_CFM_FUNCTION Q3Pick_GetData
  136.     ENDIF
  137.  
  138. ;
  139. ; extern TQ3Status Q3Pick_SetData(TQ3PickObject pick, const TQ3PickData *data)
  140. ;
  141.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  142.         IMPORT_CFM_FUNCTION Q3Pick_SetData
  143.     ENDIF
  144.  
  145. ;
  146. ; extern TQ3Status Q3Pick_GetVertexTolerance(TQ3PickObject pick, float *vertexTolerance)
  147. ;
  148.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  149.         IMPORT_CFM_FUNCTION Q3Pick_GetVertexTolerance
  150.     ENDIF
  151.  
  152. ;
  153. ; extern TQ3Status Q3Pick_GetEdgeTolerance(TQ3PickObject pick, float *edgeTolerance)
  154. ;
  155.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  156.         IMPORT_CFM_FUNCTION Q3Pick_GetEdgeTolerance
  157.     ENDIF
  158.  
  159. ;
  160. ; extern TQ3Status Q3Pick_SetVertexTolerance(TQ3PickObject pick, float vertexTolerance)
  161. ;
  162.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  163.         IMPORT_CFM_FUNCTION Q3Pick_SetVertexTolerance
  164.     ENDIF
  165.  
  166. ;
  167. ; extern TQ3Status Q3Pick_SetEdgeTolerance(TQ3PickObject pick, float edgeTolerance)
  168. ;
  169.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  170.         IMPORT_CFM_FUNCTION Q3Pick_SetEdgeTolerance
  171.     ENDIF
  172.  
  173. ;
  174. ; extern TQ3Status Q3Pick_GetNumHits(TQ3PickObject pick, unsigned long *numHits)
  175. ;
  176.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  177.         IMPORT_CFM_FUNCTION Q3Pick_GetNumHits
  178.     ENDIF
  179.  
  180. ;
  181. ; extern TQ3Status Q3Pick_EmptyHitList(TQ3PickObject pick)
  182. ;
  183.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  184.         IMPORT_CFM_FUNCTION Q3Pick_EmptyHitList
  185.     ENDIF
  186.  
  187. ;
  188. ; extern TQ3Status Q3Pick_GetPickDetailValidMask(TQ3PickObject pick, unsigned long index, TQ3PickDetail *pickDetailValidMask)
  189. ;
  190.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  191.         IMPORT_CFM_FUNCTION Q3Pick_GetPickDetailValidMask
  192.     ENDIF
  193.  
  194. ;
  195. ; extern TQ3Status Q3Pick_GetPickDetailData(TQ3PickObject pick, unsigned long index, TQ3PickDetail pickDetailValue, void *detailData)
  196. ;
  197.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  198.         IMPORT_CFM_FUNCTION Q3Pick_GetPickDetailData
  199.     ENDIF
  200.  
  201. ;
  202. ; extern TQ3Status Q3HitPath_EmptyData(TQ3HitPath *hitPath)
  203. ;
  204.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  205.         IMPORT_CFM_FUNCTION Q3HitPath_EmptyData
  206.     ENDIF
  207.  
  208.  
  209. ; *    The following functions have been superseeded
  210. ; *    by the Q3Pick_GetPickDetailData function
  211.  
  212. ;
  213. ; extern TQ3Status Q3Pick_GetHitData(TQ3PickObject pick, unsigned long index, TQ3HitData *hitData)
  214. ;
  215.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  216.         IMPORT_CFM_FUNCTION Q3Pick_GetHitData
  217.     ENDIF
  218.  
  219. ;
  220. ; extern TQ3Status Q3Hit_EmptyData(TQ3HitData *hitData)
  221. ;
  222.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  223.         IMPORT_CFM_FUNCTION Q3Hit_EmptyData
  224.     ENDIF
  225.  
  226.  
  227.  
  228. ; ******************************************************************************
  229. ; **                                                                             **
  230. ; **                            Window point pick methods                         **
  231. ; **                                                                             **
  232. ; ****************************************************************************
  233.  
  234. ;
  235. ; extern TQ3PickObject Q3WindowPointPick_New(const TQ3WindowPointPickData *data)
  236. ;
  237.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  238.         IMPORT_CFM_FUNCTION Q3WindowPointPick_New
  239.     ENDIF
  240.  
  241. ;
  242. ; extern TQ3Status Q3WindowPointPick_GetPoint(TQ3PickObject pick, TQ3Point2D *point)
  243. ;
  244.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  245.         IMPORT_CFM_FUNCTION Q3WindowPointPick_GetPoint
  246.     ENDIF
  247.  
  248. ;
  249. ; extern TQ3Status Q3WindowPointPick_SetPoint(TQ3PickObject pick, const TQ3Point2D *point)
  250. ;
  251.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  252.         IMPORT_CFM_FUNCTION Q3WindowPointPick_SetPoint
  253.     ENDIF
  254.  
  255. ;
  256. ; extern TQ3Status Q3WindowPointPick_GetData(TQ3PickObject pick, TQ3WindowPointPickData *data)
  257. ;
  258.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  259.         IMPORT_CFM_FUNCTION Q3WindowPointPick_GetData
  260.     ENDIF
  261.  
  262. ;
  263. ; extern TQ3Status Q3WindowPointPick_SetData(TQ3PickObject pick, const TQ3WindowPointPickData *data)
  264. ;
  265.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  266.         IMPORT_CFM_FUNCTION Q3WindowPointPick_SetData
  267.     ENDIF
  268.  
  269.  
  270. ; ******************************************************************************
  271. ; **                                                                             **
  272. ; **                            Window rect pick methods                         **
  273. ; **                                                                             **
  274. ; ****************************************************************************
  275.  
  276. ;
  277. ; extern TQ3PickObject Q3WindowRectPick_New(const TQ3WindowRectPickData *data)
  278. ;
  279.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  280.         IMPORT_CFM_FUNCTION Q3WindowRectPick_New
  281.     ENDIF
  282.  
  283. ;
  284. ; extern TQ3Status Q3WindowRectPick_GetRect(TQ3PickObject pick, TQ3Area *rect)
  285. ;
  286.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  287.         IMPORT_CFM_FUNCTION Q3WindowRectPick_GetRect
  288.     ENDIF
  289.  
  290. ;
  291. ; extern TQ3Status Q3WindowRectPick_SetRect(TQ3PickObject pick, const TQ3Area *rect)
  292. ;
  293.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  294.         IMPORT_CFM_FUNCTION Q3WindowRectPick_SetRect
  295.     ENDIF
  296.  
  297. ;
  298. ; extern TQ3Status Q3WindowRectPick_GetData(TQ3PickObject pick, TQ3WindowRectPickData *data)
  299. ;
  300.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  301.         IMPORT_CFM_FUNCTION Q3WindowRectPick_GetData
  302.     ENDIF
  303.  
  304. ;
  305. ; extern TQ3Status Q3WindowRectPick_SetData(TQ3PickObject pick, const TQ3WindowRectPickData *data)
  306. ;
  307.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  308.         IMPORT_CFM_FUNCTION Q3WindowRectPick_SetData
  309.     ENDIF
  310.  
  311.  
  312.  
  313. ; ******************************************************************************
  314. ; **                                                                             **
  315. ; **                                Shape Part methods                             **
  316. ; **                                                                             **
  317. ; ****************************************************************************
  318.  
  319. ;
  320. ; extern TQ3ObjectType Q3ShapePart_GetType(TQ3ShapePartObject shapePartObject)
  321. ;
  322.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  323.         IMPORT_CFM_FUNCTION Q3ShapePart_GetType
  324.     ENDIF
  325.  
  326. ;
  327. ; extern TQ3ObjectType Q3MeshPart_GetType(TQ3MeshPartObject meshPartObject)
  328. ;
  329.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  330.         IMPORT_CFM_FUNCTION Q3MeshPart_GetType
  331.     ENDIF
  332.  
  333. ;
  334. ; extern TQ3Status Q3ShapePart_GetShape(TQ3ShapePartObject shapePartObject, TQ3ShapeObject *shapeObject)
  335. ;
  336.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  337.         IMPORT_CFM_FUNCTION Q3ShapePart_GetShape
  338.     ENDIF
  339.  
  340. ;
  341. ; extern TQ3Status Q3MeshPart_GetComponent(TQ3MeshPartObject meshPartObject, TQ3MeshComponent *component)
  342. ;
  343.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  344.         IMPORT_CFM_FUNCTION Q3MeshPart_GetComponent
  345.     ENDIF
  346.  
  347. ;
  348. ; extern TQ3Status Q3MeshFacePart_GetFace(TQ3MeshFacePartObject meshFacePartObject, TQ3MeshFace *face)
  349. ;
  350.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  351.         IMPORT_CFM_FUNCTION Q3MeshFacePart_GetFace
  352.     ENDIF
  353.  
  354. ;
  355. ; extern TQ3Status Q3MeshEdgePart_GetEdge(TQ3MeshEdgePartObject meshEdgePartObject, TQ3MeshEdge *edge)
  356. ;
  357.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  358.         IMPORT_CFM_FUNCTION Q3MeshEdgePart_GetEdge
  359.     ENDIF
  360.  
  361. ;
  362. ; extern TQ3Status Q3MeshVertexPart_GetVertex(TQ3MeshVertexPartObject meshVertexPartObject, TQ3MeshVertex *vertex)
  363. ;
  364.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  365.         IMPORT_CFM_FUNCTION Q3MeshVertexPart_GetVertex
  366.     ENDIF
  367.  
  368.  
  369.  
  370.     ENDIF ; __QD3DPICK__ 
  371.  
  372.